Exclude all-pending card reports from the Submit to-do#95204
Conversation
|
@DylanDylann Please copy/paste the Reviewer Checklist from here into a new comment on this PR and complete it. If you have the K2 extension, you can simply click: [this button] |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 470f99d5f2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const hasNoSubmittableTransaction = | ||
| reportTransactionsList.length > 0 && reportTransactionsList.every((transaction) => isScanning(transaction) || hasSmartScanFailedWithMissingFields([transaction], report)); | ||
| reportTransactionsList.length > 0 && | ||
| reportTransactionsList.every((transaction) => isScanning(transaction) || isPending(transaction) || hasSmartScanFailedWithMissingFields([transaction], report)); |
There was a problem hiding this comment.
Keep Submit visible for non-card pending expenses
When an open report contains a pending cash/manual transaction (a transaction with status: PENDING but no Expensify-card metadata), this isPending() check makes hasNoSubmittableTransaction true and removes the Submit primary action/to-do. Other submit entry points only block hasOnlyPendingCardTransactions(...), and the existing ReportPrimary/Secondary action tests treat pending non-card transactions as submittable, so this should gate pending status on card transactions instead of all pending transactions.
Useful? React with 👍 / 👎.
Explanation of Change
Workspace expense reports whose only expense is a pending (unposted) Expensify Card transaction were being counted in the "Submit" to-do and shown a
Submitbutton, even though such a report can't be submitted until the transaction posts (its own next-steps text already says so).The to-do buckets are classified by
isSubmitActioninsrc/libs/ReportPrimaryActionUtils.ts. ItshasNoSubmittableTransactionguard already excluded reports whose transactions are all scanning / smartscan-failed, but it did not account for all-pending reports. The siblingisApproveActionin the same file already excludes all-pending reports, so Submit was inconsistent with Approve.This adds
isPending(transaction)to thehasNoSubmittableTransactioncheck. Because all four surfaces (Home/For You tile, Inbox/Search "Submit" badge, Spend count, and the report-levelSubmitbutton) derive from this single predicate, one change fixes all of them.This is the same family of bug as #637331 (all-held reports), but for pending card transactions. The server-side parallel is handled in a companion Auth PR so the prefetched Search snapshot agrees with the client.
Fixed Issues
$ https://github.com/Expensify/Expensify/issues/653982
PROPOSAL:
Tests
Submitbutton is offered and next-steps says the transaction is still pending.Offline tests
Same as Tests. The to-do counts are derived locally from Onyx data (
ONYXKEYS.DERIVED.TODOS), so the pending report should be excluded from the Submit to-do while offline as well.QA Steps
Same as Tests.
PR Author Checklist
### Fixed Issuessection aboveTestssectionOffline stepssectionQA stepssectiontoggleReportand notonIconClick)Avatar, I verified the components usingAvatarare working as expected)StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))npm run compress-svg)Avataris modified, I verified thatAvataris working as expected in all cases)Designlabel and/or tagged@Expensify/designso the design team can review the changes.mainbranch was merged into this PR after a review, I tested again and verified the outcome was still expected according to theTeststeps.Screenshots/Videos
Screen.Recording.2026-07-03.at.12.24.46.AM.mov